/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package presentacion.utilidad;

import hibernate.objeto.Farmacologico;
import hibernate.objeto.NoFarmacologico;
import hibernate.objeto.Paciente;
import presentacion.obra_social.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseListener;
import java.util.Vector;
import javax.swing.JDialog;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import presentacion.GestionPacientePresentacion;
import presentacion.MenuPrincipal;
import presentacion.cie9mc.GestionCie9mcPresentacion;
import presentacion.comun.ComunFarmacologicoPresentacion;
import presentacion.comun.ComunNoFarmacologicoPresentacion;
import presentacion.paciente.PacientePresentacion;
import presentacion.comun.ComunPersonaPresentacion;
import presentacion.medicamento.GestionMedicamentoPresentacion;
import presentacion.utilidad.tabla.MiModeloTabla;
import presentacion.vacuna.GestionVacunaPresentacion;
import presentacion.paciente.AntecedentePacientePresentacion;
import presentacion.vacuna.AplicacionVacunaPresentacion;

/**
 *
 * @author Administrador
 */
public class PopUpMenu implements ActionListener {

    public void actionPerformed(ActionEvent e) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    /**
     * Crea el menú de pop up con items correspondiente al objeto ObraSocial.
     *
     * @param componente La tabla a donde se agregua el menu pop up
     * @param gui Una referencia al JDialog en donde se crea
     * el pop up.
     */
    public static void crearPopupMenuObraSocial(final JTable componente,
            final GestionObraSocialPresentacion gui) {
        JMenuItem menuItem;
        //Create the popup menu.
        JPopupMenu popup = new JPopupMenu();

        menuItem = new JMenuItem("Propiedades");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        gui.modificarObraSocial();
                    }
                });
        popup.add(menuItem);

        popup.add(new JPopupMenu.Separator());
        menuItem = new JMenuItem("Seleccionar");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        gui.seleccionarObraSocial();
                    }
                });
        popup.add(menuItem);

        popup.add(new JPopupMenu.Separator());

        menuItem = new JMenuItem("Agregar nueva");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                                gui.agregarObraSocial();
                    }
                });
        popup.add(menuItem);

        popup.add(new JPopupMenu.Separator());

        menuItem = new JMenuItem("Eliminar");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        gui.eliminarObraSocial();
                    }
                });
        popup.add(menuItem);

        //Add listener to the text area so the popup menu can come up.
        MouseListener popupListener = new PopupListener(popup);
        componente.addMouseListener(popupListener);
    }

    /**
     * Crea el menú de pop up con items correspondiente al objeto
     * NombreComercialMedicamento.
     *
     * @param componente La tabla a donde se agregua el menu pop up
     * @param objetoManipulado Indica a que objeto corresponde el tratamiento.
     * @param filtrar EL textfield filtrar de la tabla
     * @param vectorNombreComercialMedicamento El vector de objetos
     * NombreComercialMedicamento cargados en la tabla
     * @param vectorPrincipioActivoMedicamento El vector de objetos
     * PrincipioActivoMedicamento cargados en la tabla
     */
    public static void createPopupMenuMedicamento(final JTable componente,
            final GestionMedicamentoPresentacion gui) {
        JMenuItem menuItem;

        //Create the popup menu.
        JPopupMenu popup = new JPopupMenu();
        //Modificar medicamento
        menuItem = new JMenuItem("Propiedades");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        gui.modificarNombreComercial();
                    }
                });
        popup.add(menuItem);

        //Agregar medicamento
        menuItem = new JMenuItem("Agregar");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        gui.agregarNombreComercial();
                    }
                });
        popup.add(menuItem);

        popup.add(new JPopupMenu.Separator());
        menuItem = new JMenuItem("Seleccionar");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        gui.seleccionarNombreComercial(componente);
                    }
                });
        popup.add(menuItem);

        popup.add(new JPopupMenu.Separator());

        //Eliminar medicamento            
        menuItem = new JMenuItem("Eliminar");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        gui.eliminarMedicamento();
                    }
                });
        popup.add(menuItem);
            
        //Add listener to the text area so the popup menu can come up.
        MouseListener popupListener = new PopupListener(popup);
        componente.addMouseListener(popupListener);
    }

    /**
     * Crea el menú de pop up con items correspondiente al objeto Cie9mc.
     *
     * @param componente La tabla a donde se agregua el menu pop up
     * @param gui Una referencia al JDialog en donde se crea
     * el pop up.
     */
    public static void crearPopupMenuCie9mc(final JTable componente,
            final GestionCie9mcPresentacion gui) {
        JMenuItem menuItem;

        //Create the popup menu.
        JPopupMenu popup = new JPopupMenu();

        menuItem = new JMenuItem("Propiedades");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        gui.propiedadesCie9mc();
                    }
                });
        popup.add(menuItem);

        popup.add(new JPopupMenu.Separator());

        menuItem = new JMenuItem("Seleccionar");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        gui.seleccionarCie9mc();
                    }
                });
        popup.add(menuItem);

        popup.add(new JPopupMenu.Separator());

        menuItem = new JMenuItem("Agregar nueva");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        gui.agregarCie9mc();
                    }
                });
        popup.add(menuItem);

        popup.add(new JPopupMenu.Separator());

        menuItem = new JMenuItem("Eliminar");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        gui.eliminarCie9mc();
                    }
                });
        popup.add(menuItem);

        //Add listener to the text area so the popup menu can come up.
        MouseListener popupListener = new PopupListener(popup);
        componente.addMouseListener(popupListener);
    }

    /**
     *Crea el menú de pop up con items correspondiente al objeto Persona.
     *
     * @param componente La tabla a donde se agregua el menu pop up
     * @param gui Una referencia al JDialog en donde se crea
     * el pop up.
     */
    public static void createPopupMenuPaciente(final JTable componente,
            final MenuPrincipal gui) {
        JMenuItem menuItem;
        //Create the popup menu.
        JPopupMenu popup = new JPopupMenu();

        menuItem = new JMenuItem("Propiedades");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        gui.agregarOModificarPaciente(
                                (Paciente) MiModeloTabla.recuperarObjetoDeTabla(
                                Paciente.class.getName(), componente));
                    }
                });
        popup.add(menuItem);

        popup.add(new JPopupMenu.Separator());

        menuItem = new JMenuItem("Gestionar");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        gui.gestionarPaciente();
                    }
                });
        popup.add(menuItem);

        menuItem = new JMenuItem("Agregar nuevo");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        gui.agregarOModificarPaciente(
                                null);
                    }
                });
        popup.add(menuItem);

        //Add listener to the text area so the popup menu can come up.
        MouseListener popupListener = new PopupListener(popup);
        componente.addMouseListener(popupListener);
    }

    /**
     *Crea el menú de pop up con items correspondiente al objeto Persona.
     *
     * @param componente La tabla a donde se agregua el menu pop up
     */
    public static void createPopupMenuPersona(final JTable componente,
            final JScrollPane jScrollPane,
            final PacientePresentacion gui) {
        JMenuItem menuItem;
        //Create the popup menu.
        JPopupMenu popup = new JPopupMenu();

        menuItem = new JMenuItem("Agregar");
        menuItem.addActionListener(
                new ActionListener() {

                    public void actionPerformed(ActionEvent event) {
                            ComunPersonaPresentacion.agregarPersona(componente,
                                    jScrollPane);
                    }
                });
        popup.add(menuItem);

        menuItem = new JMenuItem("Modificar");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        ComunPersonaPresentacion.modificarPersona(componente,
                                    gui);
                    }
                });
        popup.add(menuItem);

        popup.add(new JPopupMenu.Separator());

        menuItem = new JMenuItem("Eliminar");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                            ComunPersonaPresentacion.eliminarPersona(componente,
                                    gui);
                    }
                });
        popup.add(menuItem);

        //Add listener to the text area so the popup menu can come up.
        MouseListener popupListener = new PopupListener(popup);
        componente.addMouseListener(popupListener);
    }

    /**
     * Crea el menú de pop up con items correspondiente al objeto
     * EnfermedadYDiagnosticoAmbulatorio.
     *
     * @param componente La tabla a donde se agregua el menu pop up
     * @param gui Una referencia al JDialog en donde se crea el pop up
     */
    public static void crearPopupMenuEnfermedadYDiagnosticoAmbulatorio(
            final JTable componente, final GestionPacientePresentacion gui) {
        JMenuItem menuItem;

        //Create the popup menu.
        JPopupMenu popup = new JPopupMenu();

        menuItem = new JMenuItem("Propiedades");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        gui.propiedadesEnfermedadAmbulatorio();
                    }
                });
        popup.add(menuItem);

        popup.add(new JPopupMenu.Separator());

        menuItem = new JMenuItem("Finalizar atención");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        gui.finalizarEnfermedad();
                    }
                });
        popup.add(menuItem);
        
        menuItem = new JMenuItem("Agregar nueva");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        gui.agregarEnfermedad();
                    }
                });
        popup.add(menuItem);

        popup.add(new JPopupMenu.Separator());

        menuItem = new JMenuItem("Interconsulta");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        gui.interconsulta();
                    }
                });
        popup.add(menuItem);

        //Add listener to the text area so the popup menu can come up.
        MouseListener popupListener = new PopupListener(popup);
        componente.addMouseListener(popupListener);
    }

    /**
     * Crea el menú de pop up con items correspondiente al objeto
     * volucionEnfermeriaDeInternacion.
     *
     * @param componente La tabla a donde se agregua el menu pop up
     * @param gui Una referencia al JDialog en donde se crea el pop up
     */
    public static void crearPopupMenuEvolucionEnfermeriaDeInternacion(
            final JTable componente, final GestionPacientePresentacion gui) {
        JMenuItem menuItem;

        //Create the popup menu.
        JPopupMenu popup = new JPopupMenu();

        menuItem = new JMenuItem("Propiedades");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        gui.propiedadesEvolucionEnfermeriaDeInternacion();
                    }
                });
        popup.add(menuItem);

        menuItem = new JMenuItem("Agregar nueva");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        gui.agregarEvolucionEnfermeriaDeInternacion();
                    }
                });
        popup.add(menuItem);

        //Add listener to the text area so the popup menu can come up.
        MouseListener popupListener = new PopupListener(popup);
        componente.addMouseListener(popupListener);
    }

    /**
     * Crea el menú de pop up con items correspondiente al objeto
     * DiagnosticoYTriageInternacion.
     *
     * @param componente La tabla a donde se agregua el menu pop up
     * @param gui Una referencia al JDialog en donde se crea el pop up
     */
    public static void crearPopupMenuDiagnosticoYTriageInternacion(
            final JTable componente, final GestionPacientePresentacion gui) {
        JMenuItem menuItem;

        //Create the popup menu.
        JPopupMenu popup = new JPopupMenu();

        menuItem = new JMenuItem("Propiedades");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        gui.propiedadesDiagnosticoInternacion();
                    }
                });
        popup.add(menuItem);

        popup.add(new JPopupMenu.Separator());

        menuItem = new JMenuItem("Epicrisis");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        gui.epicrisisInternacion();
                    }
                });
        popup.add(menuItem);

        menuItem = new JMenuItem("Agregar nueva");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        gui.agregarEnfermedad();
                    }
                });
        popup.add(menuItem);

        popup.add(new JPopupMenu.Separator());

        menuItem = new JMenuItem("Interconsulta");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        gui.interconsulta();
                    }
                });
        popup.add(menuItem);

        popup.add(new JPopupMenu.Separator());

        menuItem = new JMenuItem("Tratamientos y prácticas");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        gui.tratamientoYPracticaInternacion();
                    }
                });
        popup.add(menuItem);

        popup.add(new JPopupMenu.Separator());

        menuItem = new JMenuItem("Agregar enfermería");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        gui.agregarEvolucionEnfermeriaDeInternacion();
                    }
                });
        popup.add(menuItem);

        menuItem = new JMenuItem("Ver enfermería");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        gui.verEvolucionEnfermeriaDeInternacion();
                    }
                });
        popup.add(menuItem);

        //Add listener to the text area so the popup menu can come up.
        MouseListener popupListener = new PopupListener(popup);
        componente.addMouseListener(popupListener);
    }

     /**
     * Crea el menú de pop up con items correspondiente al objeto
     * EvolucionAmbulatorio.
     *
     * @param componente La tabla a donde se agregua el menu pop up
     * @param gui Una referencia al JDialog en donde se crea
     * el pop up
     */
    public static void createPopupMenuEvolucion(
            final JTable componente, final GestionPacientePresentacion gui) {
        JMenuItem menuItem;
        
        //Create the popup menu.
        JPopupMenu popup = new JPopupMenu();

         menuItem = new JMenuItem("Propiedades");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        gui.propiedadesEvolucion();
                    }
                });
        popup.add(menuItem);

        popup.add(new JPopupMenu.Separator());

        menuItem = new JMenuItem("Agregar nueva");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        gui.agregarEvolucionAmbulatorio();
                    }
                });
        popup.add(menuItem);

        popup.add(new JPopupMenu.Separator());

        menuItem = new JMenuItem("Tratamiento");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        gui.tratamientoMedicamentoso();
                    }
                });
        popup.add(menuItem);

        //Add listener to the text area so the popup menu can come up.
        MouseListener popupListener = new PopupListener(popup);
        componente.addMouseListener(popupListener);
    }
    
    /**
     * Crea el menú de pop up con items correspondiente al objeto
     * VacunasAAplicr.
     *
     * @param componente La tabla a donde se agregua el menu pop up
     * @param referenciaJDialog Una referencia al JDialog en donde se crea
     * el pop up
     */
    public static void createPopupMenuVacuna(
            final JTable componente, final GestionVacunaPresentacion guiVacuna,
            final AplicacionVacunaPresentacion guiAplicacionVacuna) {
        JMenuItem menuItem;

        //Create the popup menu.
        JPopupMenu popup = new JPopupMenu();

        menuItem = new JMenuItem("Propiedades");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        if (guiVacuna != null) {
                            guiVacuna.propiedadesVacuna();
                        } else {
                            guiAplicacionVacuna.propiedadesVacuna();
                        }
                    }
                });
        popup.add(menuItem);

        popup.add(new JPopupMenu.Separator());

        menuItem = new JMenuItem("Agregar nueva");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        if (guiVacuna != null) {
                        guiVacuna.agregarVacuna();
                        } else {
                            guiAplicacionVacuna.agregarVacuna();
                        }
                    }
                });
        popup.add(menuItem);
        //Add listener to the text area so the popup menu can come up.
        MouseListener popupListener = new PopupListener(popup);
        componente.addMouseListener(popupListener);
    }

   /**
     * Crea el menú de pop up con items correspondiente al objeto Farmacologico
     *
     * @param componente La tabla a donde se agregua el menu pop up
     * @param gui Una referencia al JDialog en donde se crea
     * @param paciente El paciente que se está manipulando
     * @param tabla La tabla de objetos Farmacologico a recargar
     * @param tablaActivo La tabla de objetos Farmacologico a recargar extra si
     * corresponde
     * @param filtrar El texto filtrar de la tabla farmacologico
     * @param filtrarActivo El texto filtrar de la tabla farmacologico extra si
     * corresponde
     * @param vector El vector de objetos Farmacologico a recargar
     * @param vectorActivo El vector de objetos Farmacologico a recargar extra si
     * corresponde
     */
    public static void crearPopupMenuFarmacologico(final JTable componente,
            final JDialog gui, final JTable tabla, final JTable tablaActivo,
            final JTextField filtrar, final JTextField filtrarActivo,
            final Vector<Farmacologico> vector, final Vector<Farmacologico> vectorActivo) {
        JMenuItem menuItem;
        final Farmacologico farmacologico = (Farmacologico)
                MiModeloTabla.recuperarObjetoDeTabla(
                Farmacologico.class.getName(), componente);

        //Create the popup menu.
        JPopupMenu popup = new JPopupMenu();

        menuItem = new JMenuItem("Propiedades");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        ComunFarmacologicoPresentacion comun =
                                new ComunFarmacologicoPresentacion(gui,
                                farmacologico, tabla, tablaActivo, filtrar,
                                filtrarActivo, vector, vectorActivo);
                        comun.verDetalleFarmacologico();
                    }
                });
        popup.add(menuItem);

        popup.add(new JPopupMenu.Separator());

        menuItem = new JMenuItem("Finalizar medicamento");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        ComunFarmacologicoPresentacion comun =
                                new ComunFarmacologicoPresentacion(gui,
                                farmacologico, tabla, tablaActivo, filtrar,
                                filtrarActivo, vector, vectorActivo);
                        comun.finalizarFarmacologico();
                    }
                });
        popup.add(menuItem);

        //Add listener to the text area so the popup menu can come up.
        MouseListener popupListener = new PopupListener(popup);
        componente.addMouseListener(popupListener);
    }

    /**
     * Crea el menú de pop up con items correspondiente al objeto NoFarmacologico.
     *
     * @param componente La tabla a donde se agregua el menu pop up
     * @param gui Una referencia al JDialog en donde se crea
     * @param filtrar El texto filtrar de la tabla farmacologico
     * @param vector El vector de objetos Farmacologico a recargar
     */
    public static void crearPopupMenuNoFarmacologico(final JTable componente,
            final JDialog gui, final JTextField filtrar,
            final Vector<NoFarmacologico> vector) {
        JMenuItem menuItem;
        final NoFarmacologico noFarmacologico = (NoFarmacologico)
                MiModeloTabla.recuperarObjetoDeTabla(
                NoFarmacologico.class.getName(), componente);

        //Create the popup menu.
        JPopupMenu popup = new JPopupMenu();

        menuItem = new JMenuItem("Propiedades");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        ComunNoFarmacologicoPresentacion comun =
                                new ComunNoFarmacologicoPresentacion(gui,
                                noFarmacologico, componente, filtrar, vector);
                        comun.verDetalleNoFarmacologico();
                    }
                });
        popup.add(menuItem);

        popup.add(new JPopupMenu.Separator());

        menuItem = new JMenuItem("Finalizar tratamiento");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        ComunNoFarmacologicoPresentacion comun =
                                new ComunNoFarmacologicoPresentacion(gui,
                                noFarmacologico, componente, filtrar, vector);
                        comun.finalizarNoFarmacologico();
                    }
                });
        popup.add(menuItem);

        //Add listener to the text area so the popup menu can come up.
        MouseListener popupListener = new PopupListener(popup);
        componente.addMouseListener(popupListener);
    }

    /**
     * Crea el menú de pop up con items correspondiente al objeto
     * EnfermedadYDiagnosticoAmbulatorio.
     *
     * @param antecedenteEnfermedad El antecedente seleccionado
     * @param componente La tabla a donde se agregua el menu pop up
     * @param gui Una referencia al JDialog en donde se crea
     * el pop up
     */
    public static void crearPopupMenuAntecedenteEnfermedad(final JTable componente,
            final AntecedentePacientePresentacion gui, final Object antecedenteEnfermedad) {
        JMenuItem menuItem;

        //Create the popup menu.
        JPopupMenu popup = new JPopupMenu();

        menuItem = new JMenuItem("Propiedades");
        menuItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        gui.verDetalleEnfermedad(
                                antecedenteEnfermedad);
                    }
                });
        popup.add(menuItem);

        //Add listener to the text area so the popup menu can come up.
        MouseListener popupListener = new PopupListener(popup);
        componente.addMouseListener(popupListener);
    }
    
}
